package com.shujia.day09;

import java.util.ArrayList;
import java.util.Enumeration;
import java.util.ListIterator;
import java.util.Vector;

public class Demo02Vector {
    public static void main(String[] args) {
        /*
            为什么需要使用Vector?
                Vector是同步的线程安全的。 如果不需要线程安全的实现，建议使用ArrayList代替Vector
         */

        Vector<String> vector = new Vector<>();
        vector.add("张三");
        vector.add("李四");
        vector.add("王五");
        Enumeration<String> elements = vector.elements();
        vector.addElement("赵六");
        while (elements.hasMoreElements()) {
            String name = elements.nextElement();
            if ("李四".equals(name)){
                vector.remove("李四");
            }
            System.out.println();
        }

        // 获取第一个及最后一个元素
        System.out.println(vector.firstElement());
        System.out.println(vector.lastElement());

        // 指定下标位置插入数据
        vector.insertElementAt("麻七",2);
        System.out.println(vector);

        /*
            演示ArrayList的ConcurrentModificationException
                ArrayList 获取到 iterator 迭代器之后，改变了当前ArrayList中的数据长度
                没有通过iterator的next方法中对于长度的检查
                    要求 iterator 创建后原先的ArrayList长度不能发生变化
                    final void checkForComodification() {
                        if (modCount != expectedModCount)
                            throw new ConcurrentModificationException();
                    }
         */
        ArrayList<String> list = new ArrayList<>();
        list.add("1");
        list.add("2");
        ListIterator<String> iterator = list.listIterator();
        list.add("3");
        list.add("4");
//        while (iterator.hasNext()) {
//            System.out.println(iterator.next());
//        }






    }
}
